Jeg har et array statsnavn som eple X banan Y Kiwi z Jeg må legge eple, banan og kiwi i en rekke frukt og X, Y og Z i en gruppe som kalles alfabeter. Noen enkle C # mekanismer for det takk?
Bruk IEnumerable. Der overbelastning som leverer indeksen. var fruits = statsname.Where ((s, i) => i% 2 == 0) .ToArray (); var alfabeter = statsnavn.Where ((s, i) => i% 2! = 0) .ToArray (); | Stjålet fra Hvordan få alternative elementer ved hjelp av Enumerable in C # var frukt = myArray.Where ((t, i) => i% 2 == 0) .ToArray (); var alfabeter = myArray.Where ((t, i) => i% 2 == 1) .ToArray (); | Hvis jeg har forstått det, er det veldig enkelt å stille spørsmål ved hva du vil: Du vil sette frukt i en rekke frukt og det samme for alfabeter, og de vises alternativt i matrisen statsnavn slik: for (int i = 0, j = 0; i liste = ny liste () {"eple", "X", "banan", "Y", "Kiwi", "z"}; var resultat = liste.Velg ((l, i) => ny {l, i}) .GroupBy (p => p.i% 2) .Velg (x => x.Velg (v => v.l) .ToList ()) .Ramse opp(); Så har du en liste over lister: | liste frukt = ny liste (); liste alfabetet = ny liste (); for (int i = 0; i everyOther (IEnumerable collection) { bruker (var e = collection.GetEnumerator ()) { mens (e.MoveNext ()) { avkastning avkastning e.Current; e.MoveNext (); // hopp over en } } } Du kan bruke System.Linq.Skip til å hoppe over det første elementet. streng [] ord = "eple X banan Y Kiwi z" .Split (); var frukt = alle andre (ord); var alfabeter = hverandre (ord.Skip (1)); Bare bruk dem som en ny samling eller ring .ToArray () eller .ToList () på dem: foreach (streng f i frukt) Console.WriteLine (f); streng [] anArray = fruits.ToArray (); // ved hjelp av System.Linq Nå har du det du trenger. Iteratorer er metoder som gir avkastning, se Iteratorer (C # Programming Guide). Dette er veldig sterkt ved språket. Du kan: hopp over elementer dekorere elementer endre rekkefølge sammenkoblede sekvenser (se System.Linq.Concat) ... | Her er noen arbeidskoder, forhåpentligvis vil dette være nyttig for deg: bruker System; ved hjelp av System.Collections.Generic; bruker System.IO; ved hjelp av System.Linq; bruker System.Text; ved hjelp av System.Threading.Tasks; navneområde ReadFile { klasse Program { statisk ugyldig ReadFile (strengfilPath, List custumerNames, List phoneNumbers) { strengelinje = streng.Tom; var fileStream = ny StreamReader (filePath); bool isPhoneNumber = true; mens ((line = fileStream.ReadLine ())! = null) { hvis (isPhoneNumber) { phoneNumbers.Add (Convert.ToInt32 (linje)); isPhoneNumber = false; } ellers { custumerNames.Add (linje); isPhoneNumber = true; } } fileStream.Close (); } statisk tomrom Main (streng [] args) { Console.WriteLine ("Begynte å lese filen ..."); Liste custumersNamesList = ny liste (); Liste custumersPhonesNumbers = ny liste (); ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers); // Forutsatt at begge listene har samme lengde. for (int i = 0; i